#ifndef _Ape__EInvalidArgument_h
#define _Ape__EInvalidArgument_h

#include <Ape/Object.h>
#include <Ape/Exception.h>

#ifdef WITH_EXCEPTIONS

namespace Ape {
	/**
		This type of exception should be thrown when the argument is incorrect
		@author Roman Gafiyatullin
	*/
	class EInvalidArgument
				: public Exception
	{
		TYPE_NAME ("Ape::EInvalidArgument")
		CLONEABLE (EInvalidArgument)
	public:
		/**
			initialize with empty message
		*/
		EInvalidArgument();
		/**
			initialize with argument name
			@param argname argument name
		*/
		EInvalidArgument (const wchar_t* argname);
		/**
			copy ctor
			@param other original object
		*/
		EInvalidArgument (const EInvalidArgument& other);
		/**
			dtor
		*/
		virtual ~EInvalidArgument();
		
		virtual void _Dump (bool verbose = false) const;
	};
}

#endif // WITH_EXCEPTIONS

#endif // _Ape__EInvalidArgument_h
